// 3.设计一个音乐播放器类MusicPlayer，包括属性有音乐列表、当前播放的音乐、播放模式等，并能够实现添加音乐、删除音乐、播放音乐等方法。（随意设计）

class MusicPlayer(var playlist: List[String] = List(), var currentTrack: String = "", var shuffleMode: Boolean = false) {

  def addTrack(track: String): Unit = {
    playlist = playlist :+ track
    println(s"Added $track to the playlist.")
  }

  def removeTrack(track: String): Unit = {
    playlist = playlist.filter(_ != track)
    println(s"Removed $track from the playlist.")
  }

  def play(): Unit = {
    if (playlist.isEmpty) {
      println("Playlist is empty.")
    } else if (currentTrack.isEmpty) {
      currentTrack = playlist.head
      println(s"Now playing $currentTrack.")
    } else {
      val currentIndex = playlist.indexOf(currentTrack)
      val nextIndex = if (shuffleMode) scala.util.Random.nextInt(playlist.length) else (currentIndex + 1) % playlist.length
      currentTrack = playlist(nextIndex)
      println(s"Now playing $currentTrack.")
    }
  }

  def setShuffleMode(mode: Boolean): Unit = {
    shuffleMode = mode
    if (shuffleMode) println("Shuffle mode is on.") else println("Shuffle mode is off.")
  }
}

// 我们定义了一个名为MusicPlayer的类，它包含了一个音乐列表playlist、当前播放的音乐currentTrack和播放模式shuffleMode等属性。
// 我们实现了三个方法，分别是addTrack、removeTrack和play，用于添加音乐、删除音乐和播放音乐。其中，addTrack方法接受一个音乐名称，将其添加到音乐列表中。
// removeTrack方法接受一个音乐名称，将其从音乐列表中删除。play方法用于播放音乐，它首先检查音乐列表是否为空，然后确定下一个要播放的音乐并更新当前播放的音乐。
// 我们还实现了一个setShuffleMode方法，用于设置播放模式。当shuffleMode为true时，播放器会在播放下一个音乐时随机选择一个，而不是按照音乐列表的顺序播放。
// 现在我们可以创建一个MusicPlayer对象并使用它的方法操作音乐播放器。例如：
val player = new MusicPlayer()
player.addTrack("Hello")
player.addTrack("World")
player.addTrack("!")
player.play() // Now playing Hello.
player.play() // Now playing World.
player.setShuffleMode(true) // Shuffle mode is on.
player.play() // Now playing Hello (or World or !).
player.removeTrack("!") // Removed ! from the playlist.
player.play() // Now playing Hello (or World).
